package com.zhuang.chapter18;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/**
 * 
 * @ClassName: Work01
 * @Description:作业库代码
 * @author: KangXiaoZhuang
 * @date: 2022年11月26日 下午10:36:26
 */
public class Work01 {

	public static void main(String[] args) {
		// circle();
		// grade();
		// triangle();
		// test();
		// count();
		// printPrime();
		// sum();
		// testStudent();
		// testSort();
		// bubbleSort();
		reverseArray();
	}

	// 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。输出计算结果,输出时要求有文字说明。请编程序。
	public static void circle() {
		double radius = 1.5;
		int h = 3;
		double area = Math.PI * Math.pow(radius, 2);
		double cicu = 2 * Math.PI * radius;
		double circleArea = 4 * Math.PI * Math.pow(radius, 2);
		double circleVolum = (4 * Math.PI * Math.pow(radius, 3)) / 3;
		double column = Math.PI * Math.pow(radius, 2) * h;
		System.out.println("圆的面积" + area);
		System.out.println("圆的周长" + cicu);
		System.out.println("圆球表面积" + circleArea);
		System.out.println("圆球体积" + circleVolum);
		System.out.println("圆柱体积" + column);
	}

	// 给出一个百分制成绩，要求输出成绩等级A、B、C、D、E。90分以上为A，81－89分为B，70－79分为C，60－69分为D，60分以下为E。说明：Character.toUpperCase(ch)可以把小写字母转换为大写字母。
	public static void grade() {
		System.out.println("输入一个成绩");
		Scanner scanner = new Scanner(System.in);
		int grade = scanner.nextInt();
		if (grade > 90 && grade <= 100) {
			System.out.println("A");
		} else if (grade <= 89 && grade >= 81) {
			System.out.println("B");
		} else if (grade >= 70 && grade <= 79) {
			System.out.println("C");
		} else if (grade >= 60 && grade <= 69) {
			System.out.println("D");
		} else if (grade < 60) {
			System.out.println("E");
		} else {
			System.out.println("成绩有误");
		}
	}

	// 任意给定3个正实数（a，b，c）作为三角形的三边，判断是否能组成三角形，若可以则输出它的面积。请编程。说明：Math.sqrt()方法为求平方根；a+b＞c，a+c＞b，b+c＞a同时成立组成三角形；p=(a+b+c)/2；面积=Math.sqrt(p*(p-a)*(p-b)*(p-c))
	public static void triangle() {
		System.out.println("输入三角形的三条边");
		Scanner scanner = new Scanner(System.in);
		int a = scanner.nextInt();
		int b = scanner.nextInt();
		int c = scanner.nextInt();
		if (isValid(a, b, c)) {
			double p = (a + b + c) / 2;
			double area = Math.sqrt(p * (p - a) * (p - b) * (p - c));
			System.out.println("面积是" + area);
		} else {
			System.out.println("输入的三条边不合法!");
		}
	}

	public static boolean isValid(int a, int b, int c) {
		return a + b > c && a + c > b && b + c > a;
	}

	// 编程把100～200之间的能被3整除的数输出。
	public static void test() {
		for (int i = 100; i <= 200; i++) {
			if (i % 3 == 0) {
				System.out.println(i);
			}
		}
	}

	public static int factorial(int n) {
		if (n == 1) {
			return 1;
		}
		return n * factorial(n - 1);
	}

	// 编程求1+2!+3!+…+20! 的和。
	public static void count() {
		int sum = 0;
		for (int i = 1; i <= 20; i++) {
			sum += factorial(i);
		}
		System.out.println("1+2!+3!+…+20!的和" + sum);
	}

	// 判断是否素数
	public static boolean isPrime(int n) {
		for (int i = 2; i < Math.sqrt(n); i++) {
			if (n % i == 0) {
				return false;
			}
		}
		return true;
	}

	// 编写程序，找出50~100之间的所有素数。
	public static void printPrime() {
		for (int i = 50; i <= 100; i++) {
			if (isPrime(i)) {
				System.out.println(i);
			}
		}
	}

	// 编写一个将摄氏温度转换为华氏温度的程序，其转换公式如下：华氏温度=（9/5）*摄氏温度+32
	public static void solution15() {
		System.out.println("输入一个摄氏温度！");
		Scanner scanner = new Scanner(System.in);
		int s = scanner.nextInt();
		int hs = (9 * s) / 5 + 32;
		System.out.println("华氏温度为->" + hs + "°C");
	}

	// 设计程序完成向屏幕打印1000以内的素数和
	public static void sum() {
		int sum = 0;
		for (int i = 1; i <= 1000; i++) {
			if (isPrime(i)) {
				sum += i;
			}
		}
		System.out.println("1000以内的素数和:" + sum);
	}

	public static void testStudent() {
		ArrayList<Student> list = new ArrayList<>();
		Student student1 = new Student(1, "zk1");
		Student student2 = new Student(2, "zk2");
		Student student3 = new Student(3, "zk3");
		Student student4 = new Student(4, "zk3");
		list.add(student1);
		list.add(student2);
		list.add(1, student3);
		list.add(1, student4);
		list.remove(list.size() - 1);
		list.forEach(System.out::println);
	}

	public static void testSort() {
		IntSort intSort = new IntSort();
		intSort.sort(5, 20);
		System.out.println();
		intSort.sort(5, 20, 2);
	}

	// 请使用冒泡排序算法编写程序，实现对数组{25,24,12,76,101,96,28}的排序
	public static void bubbleSort() {
		int[] arr = { 25, 24, 12, 76, 101, 96, 28 };
		System.out.println("=====排序前=====");
		System.out.println(Arrays.toString(arr));
		int temp = 0;
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				// 如果前面的数比后面的数大 交换
				if (arr[j] > arr[j + 1]) {
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		System.out.println("=====排序后=====");
		System.out.println(Arrays.toString(arr));
	}
	
	// 将一个数组逆序输出
	public static void reverseArray() {
		int[] arr = { 25, 24, 12, 76, 101, 96, 28 };
		for (int i = arr.length - 1; i >= 0; i--) {
			System.out.println(arr[i]);
		}
	}
}
